home *** CD-ROM | disk | FTP | other *** search
/ InfoMagic Internet Tools 1995 April / Internet Tools.iso / infoserv / www / cern / doc / www-talk.archive.Z / www-talk.archive / text0189.txt < prev    next >
Encoding:
Text File  |  1992-11-30  |  898 b   |  53 lines

  1. #!/usr/local/bin/perl
  2. #
  3. # USE
  4. #   fix-html.pl <W3-file.html >W3-file.sgml
  5. #
  6. # SEE ALSO
  7. #   the html.dtd.
  8. #
  9.  
  10. print "<!DOCTYPE HTML SYSTEM>\n";
  11.  
  12. @html = <>;            # read whole file
  13. $_ = join('', @html);
  14.  
  15. while(/</){
  16.     &out($`);
  17.     $_ = $';
  18.     if(s/^A\s+//i){
  19.     &fix_anchor;
  20.     }elsif(s/^NEXTID\s+(\d+)\s*>//){
  21.     &out("<NEXTID N=$1>");
  22.     }else{
  23.     &out('<');
  24.     }
  25. }
  26.  
  27. &out($_);
  28.  
  29. sub out{
  30.     print $_[0];
  31. }
  32.  
  33. sub fix_anchor{
  34.     local($name, $href, $type);
  35.  
  36.     # What exactly is the syntax of an SGML attribute value?
  37.     while(s/^(\w+)\s*=\s*((\"[^\"]*\")|([^\s>]+))\s*//){
  38.     local($v) = ($3 || $4);
  39.     local($a) = $1;
  40.     $href = $v if $a =~ /^href$/i;
  41.     $name = $v if $a =~ /^name$/i;
  42.     $type = $v if $a =~ /^type$/i;
  43.     }
  44.     s/[^>]*>//;
  45.  
  46.     &out("<A");
  47.     &out(" NAME=\"$name\"") if $name ne '';
  48.     &out(" TYPE=\"$type\"") if $type ne '';
  49.     &out(" HREF=\"$href\"") if $href ne '';
  50.     &out(">");
  51. }
  52.  
  53.